home *** CD-ROM | disk | FTP | other *** search
/ LOGIC Apps / Logic-APPLE_II_APPS.iso / mac / LOGIC Apple II 5.25" Library - ProDOS / PRO026.dsk / FIM.bas < prev    next >
BASIC Source File  |  2012-02-16  |  16KB  |  222 lines

  1. 100  REM      ******************************************
  2. 110  REM      *                                        *
  3. 120  REM      *  Stock Portfolio Tracking Program  V2  *
  4. 130  REM      *  Copyright 1986/ 1987 by Eric P. King  *
  5. 140  REM      *              FIM V1.00                 *
  6. 150  REM      *                                        *
  7. 160  REM      ******************************************
  8. 170  REM 
  9. 180  CALL  PEEK(175) +256 * PEEK(176) -46
  10. 190  ONERR  GOTO 1920
  11. 200  PRINT D$"PREFIX"P2$: GOTO 300
  12. 210  REM      --- DISPLAY NAMES IN MASTER FILE SUB ---
  13. 220 N$ = "<< NAMES IN USE >>": GOSUB 2140
  14. 230  & "WINDOW",4,24,35: HOME : IF A = 0 GOTO 10030
  15. 240 J = 0: FOR I = 1 TO A1: PRINT M$(I,0)"     Lot# "M$(I,1)
  16. 250 J = J +1: IF J = 15  THEN  PRINT : PRINT "=MORE= PRESS ANY KEY";: CALL  -756: HOME :J = 0
  17. 260  NEXT : PRINT : PRINT "=THATS ALL=  PRESS ANY KEY";: CALL  -756: RETURN 
  18. 270  REM 
  19. 280  REM      <<--- FILE MAINTENANCE ROUTINE --->>
  20. 290  REM 
  21. 300 N$ = "<< FILE MAINTENANCE >>": GOSUB 2140: & "WINDOW",4,20,30: HOME 
  22. 310  PRINT "1) Clean up a Price File": PRINT : PRINT "2) Delete an Investment": PRINT "3) Delete a Price File": PRINT : PRINT "4) Create Weekly Price File"
  23. 320  PRINT : PRINT "5) Adjust for Stock Split": PRINT : PRINT "6) Create a new Sales File": PRINT "7) Create a new Dividend File"
  24. 330  PRINT "8) Create a new Capitol Gains file"
  25. 340  PRINT "9) Return to Main Menu": PRINT : PRINT "Select: ";: & "IU","#=1..9";"#";A$: IF A$ = "" GOTO 300
  26. 350 A =  VAL(A$): ON A GOTO 370,720,890,980,1430,1740,1790,1840,1880
  27. 360  REM     -- CLEAN UP A PRICE FILE --
  28. 370 N$ = "<< CLEAN UP A PRICE FILE >>": GOSUB 2140
  29. 380  PRINT "This option may be used whenever you have accumulated more than 220"
  30. 390  PRINT "entries in a Price file, or more than you need. The graphing module can"
  31. 400  PRINT "use only the most recent 220 entries for graphing a stocks activity."
  32. 410  GOSUB 2180: GOSUB 2160: IF A$ = "" GOTO 300
  33. 420  IF  VAL(A$) = 1  THEN  GOSUB 220: GOTO 370
  34. 430 B = 0: FOR I = 1 TO A1: IF A$ = M$(I,0)  THEN B = 1:I = A1
  35. 440  NEXT : IF B = 1 GOTO 470
  36. 450  CALL  -198: & "POS",10,20;"That name is not in the Master file."
  37. 460  & "POS",10,21;"To try again press any key": CALL  -756: GOTO 370
  38. 470  HOME : & "POS",30,6;"1) Daily Price File": & "POS",30,7;"2) Weekly Price File"
  39. 480  & "POS",38,9: & "IU","#=1..2";"#";B$: IF B$ = "" GOTO 480
  40. 490  IF B$ = "2"  THEN A$ = A$ +".W"
  41. 500  HOME : & "CENTER","CHECKING # OF ENTRIES IN FILE":FL = 4: PRINT D$"VERIFY PRICES/"A$
  42. 510  PRINT D$"OPEN PRICES/"A$: PRINT D$"READ PRICES/"A$",R0": INPUT RT: PRINT D$"CLOSE":
  43. 520  IF RT <6  THEN  HOME : & "CENTER","ABORTED...Not enough entries on file.": PRINT : & "CENTER","PRESS ANY KEY TO EXIT": CALL  -756: GOTO 380
  44. 530  HOME :A = 0: IF RT >220  THEN A = 1
  45. 540  & "POS",22,4: PRINT "There are "RT" entries in this file.": & "CENTER","You may": & "POS",30,7;"1) Purge some of the entries."
  46. 550  IF A = 1  THEN  & "POS",30,8;"2) Purge all but 220 of the entries."
  47. 560  & "POS",30,9;"3) Exit to the Menu.": & "POS",30,11;"Select:": & "POS",39,11: & "IU","#=1..3";"#";B$: IF B$ = "" GOTO 540
  48. 570 B =  VAL(B$): IF B = 2  AND A = 0 GOTO 540
  49. 580  IF B = 3 GOTO 300
  50. 590  IF B = 2  THEN A = RT -220: GOTO 630
  51. 600  & "POS"1,5: CALL  -958: PRINT "You may remove all but the most recent 5 entries in the file.": PRINT 
  52. 610  & "CENTER","Enter the number of entries to delete.": & "POS",39,9: & "IU";"###";B$:A =  VAL(B$): IF A = 0 GOTO 600
  53. 620  IF (RT -A) <5 GOTO 600
  54. 630  PRINT : PRINT : & "CENTER","BEGINNING CLEAN UP... THIS MAY TAKE AWHILE"
  55. 640  & "WINDOW",20: HOME :K = 1: PRINT D$"OPEN PRICES/"A$:
  56. 650  PRINT D$"OPEN PRICES/TEMP,L42": FOR I = (A +1) TO RT
  57. 660  PRINT D$"READ PRICES/"A$",R"I: FOR J = 0 TO 6: INPUT T$(J): NEXT 
  58. 670  PRINT D$"WRITE PRICES/TEMP,R"K: FOR J = 0 TO 6: PRINT T$(J)
  59. 680 T$(J) = "": NEXT :K = K +1: NEXT : PRINT D$"WRITE PRICES/TEMP,R0"
  60. 690  PRINT K -1: PRINT D$"CLOSE": PRINT D$"DELETE PRICES/"A$
  61. 700  PRINT D$"RENAME PRICES/TEMP, PRICES/"A$: GOTO 300
  62. 710  REM     -- DELETE AN INVESTMENT --
  63. 720 N$ = "<< DELETE AN INVESTMENT >>": GOSUB 2140
  64. 730  GOSUB 2180: GOSUB 2160: IF A$ = "" GOTO 300
  65. 740  IF  VAL(A$) = 1  THEN  GOSUB 220: GOTO 720
  66. 750 B = 0: FOR I = 1 TO A1: IF A$ = M$(I,0)  THEN B = 1:I = A1
  67. 760  NEXT : IF B = 1 GOTO 790
  68. 770  CALL  -198: & "POS",10,20;"That name is not in the Master file."
  69. 780  & "POS",10,21;"To try again press any key": CALL  -756: GOTO 720
  70. 790 B = 0: FOR I = A1 TO 1  STEP  -1: IF A$ = M$(I,0)  THEN B =  VAL(M$(I,1)):I = 1
  71. 800  NEXT 
  72. 810  & "POS",26,15: PRINT "Files contain Lot# 1 to Lot # "B
  73. 820  & "POS",26,17: PRINT "Select the one to delete; Lot# ";
  74. 830  & "IU";"##";B$: IF B$ = "" GOTO 720
  75. 840 C =  VAL(B$): IF C <1  OR C >B GOTO 820
  76. 850  FOR I = 1 TO A1: IF A$ = M$(I,0)  AND C =  VAL(M$(I,1))  THEN D = I:I = A1
  77. 860  NEXT : HOME : & "CENTER","DELETION IN PROGRESS": & "WINDOW",22: HOME 
  78. 870  GOSUB 2210: GOTO 300
  79. 880  REM     -- DELETE A PRICE FILE --
  80. 890 N$ = "<< DELETE A PRICE FILE >>": GOSUB 2140
  81. 900  GOSUB 2180: GOSUB 2160: IF A$ = "" GOTO 300
  82. 910  IF  VAL(A$) = 1  THEN  GOSUB 220: GOTO 890
  83. 920  HOME : VTAB 10: & "CENTER","ARE YOU SURE? (Y/N)": & "POS",38,15
  84. 930  & "IU","#=Y,N";"#";B$: IF B$ = "N" GOTO 300
  85. 940 FL = 1: PRINT D$"DELETE PRICES/"A$: GOTO 300
  86. 950  REM 
  87. 960  REM     <<------- CREATE/ ADD TO A WEEKLY PRICE FILE -------->>
  88. 970  REM 
  89. 980 N$ = "CREATE/ ADD TO A WEEKLY PRICE FILE": GOSUB 2140
  90. 990  PRINT "This routine will create a file of weekly HIGH, LOW, CLOSE & VOLUME"
  91. 1000  PRINT "data for charting from a daily price file. The daily file is not deleted."
  92. 1010  PRINT "It can also add new data to an existing weekly file that you have"
  93. 1020  PRINT "previously created with this routine and is the only way to do so."
  94. 1030  PRINT "If you have been entering weekly data via the UPDATE PRICES routine"
  95. 1040  PRINT "do not use this routine on the file."
  96. 1050  PRINT : PRINT "The weekly data is compiled from groups of five daily entries."
  97. 1060  PRINT "This means that if the daily file does not start at the beginning"
  98. 1070  PRINT "of a week, the date of each weekly group will not correspond to Fridays.": PRINT : PRINT : POKE 1403,30: PRINT "PRESS ANY KEY TO CONTINUE";: CALL  -756
  99. 1080  HOME : & "POS",33,5;"1) Continue": & "POS",33,6;"2) Backup to File Maintenance": & "POS",33,9: & "IU","#=1..2";"#";A$: IF A$ = "" GOTO 1080
  100. 1090 A =  VAL(A$): IF A = 2 GOTO 300
  101. 1100  GOSUB 2140: GOSUB 2180: GOSUB 2160: IF A$ = "" GOTO 300
  102. 1110  IF  VAL(A$) = 1  THEN  GOSUB 220: GOTO 1100
  103. 1120 B = 0: FOR I = 1 TO A1: IF A$ = M$(I,0)  THEN B = 1:I = A1
  104. 1130  NEXT : IF B = 1 GOTO 1160
  105. 1140  CALL  -198: & "POS",10,20;"That name is not in the Master file.": & "POS",10,21;"To try again press any key": CALL  -756: GOTO 1100
  106. 1150  REM     -- SEE IF FILES EXIST --
  107. 1160  HOME : & "POS",1,10: & "CENTER","<< WORKING >>":CF = 0:FL = 2: PRINT D$"VERIFY PRICES/"A$:B$ = A$ +".W":FL = 3: PRINT D$"VERIFY PRICES/"B$
  108. 1170  REM     -- GET REQUIRED STARTING DATA FROM FILES --
  109. 1180  IF CF = 1  THEN  PRINT D$"OPEN PRICES/"B$",L42": PRINT D$"WRITE PRICES/"B$",R0": PRINT 0:R1 = 0
  110. 1190  IF CF = 0  THEN  PRINT D$"OPEN PRICES/"B$: PRINT D$"READ PRICES/"B$",R0": INPUT R1
  111. 1200  IF CF = 0  THEN  PRINT D$"READ PRICES/"B$",R"R1: FOR I = 0 TO 6: INPUT T$(I): NEXT :Y =  VAL(T$(6)):D =  VAL(T$(5)):M =  VAL(T$(4)): FOR I = 0 TO 6:T$(I) = "": NEXT 
  112. 1210  PRINT D$"OPEN PRICES/"A$: PRINT D$"READ PRICES/"A$",R0": INPUT R2: IF R2 >5 GOTO 1240
  113. 1220  PRINT D$"CLOSE": HOME : & "POS",1,9: & "CENTER","INSUFFICIENT DATA -- PROCESS ABORTED": PRINT D$"DELETE PRICES/"B$
  114. 1230  & "POS",30,13;"Press any key to continue": CALL  -198: CALL  -756: GOTO 300
  115. 1240  IF CF = 1  THEN A = 1: GOTO 1330
  116. 1250  REM     -- FIND POS OF NEWEST UNUSED DAILY DATA --
  117. 1260 A = 0:B = 0: FOR I = R2 TO 1  STEP  -1: PRINT D$"READ PRICES/"A$",R"I: FOR J = 0 TO 6: INPUT T$(J): NEXT :YY =  VAL(T$(6)):DD =  VAL(T$(5))
  118. 1270 MM =  VAL(T$(4)): FOR J = 0 TO 6:T$(J) = "": NEXT : IF YY >Y  THEN B = 1
  119. 1280  IF (YY =  >Y)  AND (MM >M)  THEN B = 1
  120. 1290  IF (YY =  >Y)  AND (MM =  >M)  AND (DD =  >D)  THEN B = 1
  121. 1300  IF B = 0  THEN A = I +1:I = 1
  122. 1310 B = 0: NEXT : IF (R2 -A) <5 GOTO 1220
  123. 1320  REM     -- COMPILE DATA FOR WEEKLY FILE --
  124. 1330 B = 1:VO = 0: PRINT D$"READ PRICES/"A$",R"A: FOR J = 0 TO 3: INPUT T$(J): NEXT :HP =  VAL(T$(0)):LP =  VAL(T$(1)):VO =  VAL(T$(3)): IF LP = 0  THEN LP = 10000
  125. 1340  FOR I = (A +1) TO R2: PRINT D$"READ PRICES/"A$",R"I: FOR J = 0 TO 6: INPUT T$(J): NEXT :B = B +1: IF  VAL(T$(0)) = 0 GOTO 1380
  126. 1350  IF  VAL(T$(0)) >HP  THEN HP =  VAL(T$(0))
  127. 1360  IF  VAL(T$(1)) <LP  THEN LP =  VAL(T$(1))
  128. 1370 U$(0) = T$(2)
  129. 1380 VO = VO + VAL(T$(3)): IF B <5 GOTO 1410
  130. 1390 B = 0:T$(0) =  STR$(HP):T$(1) =  STR$(LP):T$(3) =  STR$(VO):T$(2) = U$(0):VO = 0:R1 = R1 +1: PRINT D$"WRITE PRICES/"B$",R"R1: FOR J = 0 TO 6: PRINT T$(J): NEXT 
  131. 1400  IF I < >R2  THEN HP = 0:LP = 10000
  132. 1410  FOR J = 0 TO 6:T$(J) = "": NEXT : NEXT : PRINT D$"WRITE PRICES/"B$",R0": PRINT R1: PRINT D$"CLOSE": GOTO 300
  133. 1420  REM    -- ADJUST FOR STOCK SPLITS --
  134. 1430 N$ = "<< ADJUST FOR STOCK SPLIT >>": GOSUB 2140: PRINT : PRINT 
  135. 1440  PRINT "This routine will adjust all entries on file for a stock that has split."
  136. 1450  PRINT "All current lots in the Master and Price files (including the"
  137. 1460  PRINT "weekly Price file if one exists) will be adjusted.": PRINT : PRINT : & "CENTER","THIS ACTION IS IRREVOCABLE !"
  138. 1470  & "POS",33,16;"1) Continue": & "POS",33,17;"2) Backup to File Maintenance": & "POS",33,19: & "IU","#=1..2";"#";A$: IF A$ = "" GOTO 1470
  139. 1480 A =  VAL(A$): IF A = 2 GOTO 300
  140. 1490  & "WINDOW",4,24,1,80: HOME : GOSUB 2180: GOSUB 2160: IF A$ = "" GOTO 300
  141. 1500  IF  VAL(A$) = 1  THEN  GOSUB 220: GOTO 1490
  142. 1510 B = 0: FOR I = 1 TO A1: IF A$ = M$(I,0)  THEN B = 1:I = A1
  143. 1520  NEXT : IF B = 1 GOTO 1550
  144. 1530  CALL  -198: & "POS",10,20;"That name is not in the Master file."
  145. 1540  & "POS",10,21;"To try again press any key": CALL  -756: GOTO 1490
  146. 1550  HOME : & "POS",1,10: & "CENTER","Enter the split factor, I.E.,": & "CENTER","2 for 1, 5 for 4, 1 for 2, etc.": & "POS",39,14;"for"
  147. 1560  & "POS",36,14: & "IU";"##";B$:B =  VAL(B$): & "POS",43,14: & "IU";"##";B$:C =  VAL(B$): PRINT : PRINT : & "CENTER","You entered"
  148. 1570  & "POS",36,19: PRINT B" for "C: PRINT : & "CENTER","Is this correct? (Y/N)": & "POS",40,23: & "IU","#=Y,N";"#";B$: IF B$ < >"Y" GOTO 1550
  149. 1580  IF B = 0  OR C = 0 GOTO 1550
  150. 1590  HOME :A = (B/C):Y = (C/B): PRINT "ADJUSTING the MASTER FILE": FOR I = 1 TO A1: IF A$ < >M$(I,0) GOTO 1640
  151. 1600  PRINT D$"OPEN MASTER": PRINT D$"READ MASTER,R"I: FOR J = 0 TO 9: INPUT T$(J): NEXT :B =  VAL(T$(2)):C =  VAL(T$(3)):B = A *B:C = Y *C:T$(2) =  STR$(B):T$(3) =  STR$(C)
  152. 1610  IF  LEN(T$(2)) >7  THEN T$(2) =  LEFT$(T$(2),7)
  153. 1620  IF  LEN(T$(3)) >8  THEN T$(3) =  LEFT$(T$(3),8)
  154. 1630  PRINT D$"WRITE MASTER,R"I: FOR J = 0 TO 9: PRINT T$(J):T$(J) = "": NEXT : PRINT D$"CLOSE"
  155. 1640  NEXT : PRINT 
  156. 1650  PRINT "ADJUSTING the DAILY PRICE FILE": GOSUB 1670:A$ = A$ +".W":FL = 5: PRINT D$"VERIFY PRICES/"A$
  157. 1660  PRINT : PRINT "ADJUSTING the WEEKLY PRICE FILE": GOSUB 1670: PRINT : PRINT "ADJUSTMENTS COMPLETED": FOR I = 0 TO 1000: NEXT : GOTO 300
  158. 1670  PRINT D$"OPEN PRICES/"A$: PRINT D$"READ PRICES/"A$: INPUT B: IF B = 0  THEN  PRINT D$"CLOSE": RETURN 
  159. 1680  FOR I = 1 TO B: PRINT D$"READ PRICES/"A$",R"I: FOR J = 0 TO 6: INPUT T$(J): NEXT :B =  VAL(T$(0)):C =  VAL(T$(1)):D =  VAL(T$(2)):E =  VAL(T$(3)):B = Y *B:C = Y *C:D = Y *D:E = Y *E
  160. 1690 T$(0) =  STR$(B):T$(1) =  STR$(C):T$(2) =  STR$(D):T$(3) =  STR$(E)
  161. 1700  FOR J = 0 TO 2: IF  LEN(T$(J)) >8  THEN T$(J) =  LEFT$(T$(J),8)
  162. 1710  NEXT : IF  LEN(T$(3)) >5  THEN T$(3) =  LEFT$(T$(3),5)
  163. 1720  PRINT D$" WRITE PRICES/"A$",R"I: FOR J = 0 TO 6: PRINT T$(J):T$(J) = "": NEXT : NEXT : PRINT D$"CLOSE": RETURN 
  164. 1730  REM     ------ CREATE A NEW SALES FILE --------
  165. 1740 N$ = "<< CREATE A NEW SALES FILE >>": GOSUB 2140: PRINT " IF YOU ARE VERY SURE THAT YOU DO NOT NEED TO KEEP A RECORD OF ANY OF THE"
  166. 1750  PRINT "transactions that are recorded in the SALES file, you may use this routine": PRINT "to create a new, empty, SALES file."
  167. 1760  & "POS",1,12: & "CENTER","Continue ?": & "CENTER","(Y/N)": & "POS",40,15: & "IU","#=Y,N";"#";A$: IF A$ < >"Y" GOTO 300
  168. 1770  PRINT D$"DELETE SALES": PRINT D$"OPEN SALES,L80": PRINT D$"WRITE SALES,R0": PRINT 0: PRINT D$"CLOSE": GOTO 300
  169. 1780  REM    ----- CREATE A NEW DIVIDEND FILE -----
  170. 1790 N$ = "<< CREATE A NEW DIVIDEND FILE >>": GOSUB 2140: PRINT "If you are very sure that you do not need to keep a record of any of the"
  171. 1800  PRINT "transactions that are recorded in the Dividend file, you may use": PRINT "this routine to create a new, empty Dividend file."
  172. 1810  & "POS",1,12: & "CENTER","Continue ?": & "CENTER","(Y/N)": & "POS",40,15: & "IU","#=Y,N";"#";A$: IF A$ < >"Y" GOTO 300
  173. 1820  PRINT D$"DELETE DIVIDEND": PRINT D$"OPEN DIVIDEND,L24": PRINT D$"WRITE DIVIDEND,R0": PRINT 0: PRINT D$"CLOSE": GOTO 300
  174. 1830  REM   ---- CREATE A NEW CAPITOL GAINS FILE ----
  175. 1840 N$ = "<< CREATE A NEW CAPITOL GAINS FILE >>": GOSUB 2140: PRINT "If you are very sure that you do not need to keep a record of any of the"
  176. 1850  PRINT "transactions that are recorded in the Cap Gains file, you may use": PRINT "this routine to create a new, empty Cap Gains file."
  177. 1860  & "POS",1,12: & "CENTER","Continue ?": & "CENTER","(Y/N)": & "POS",40,15: & "IU","#=Y,N";"#";A$: IF A$ < >"Y" GOTO 300
  178. 1870  PRINT D$"DELETE CAP.GAIN": PRINT D$"OPEN CAP.GAIN,L24": PRINT D$"WRITE CAP.GAIN,R0": PRINT 0: PRINT D$"CLOSE": GOTO 300
  179. 1880  PRINT D$"PREFIX"P1$: PRINT D$"RUN STOCKTRK"
  180. 1890  REM 
  181. 1900  REM      <<--- ERROR ROUTINES --->>
  182. 1910  REM 
  183. 1920  & "ERR",EC,EL: POKE 216,0: ONERR  GOTO 1920
  184. 1930  IF EC = 9 GOTO 2080
  185. 1940  IF EC < >6 GOTO 1960
  186. 1950  ON FL GOTO 1980,2010,2040,2060,2120
  187. 1960  PRINT D$"CLOSE": CALL  -211: PRINT : PRINT "UNHANDLED ERROR": PRINT "ERROR # "EC"  IN LINE  "EL: END 
  188. 1970  REM     -- ATTEMPTED TO DELETE PRICE OR DIVIDEND FILE/ NOT FOUND
  189. 1980  HOME : CALL  -198: VTAB 10: & "CENTER","THE NAME YOU GAVE": & "CENTER",A$: & "CENTER","IS NOT A VALID FILE NAME"
  190. 1990  & "CENTER","AND NO DELETIONS HAVE OCCURRED": PRINT : PRINT : & "CENTER","Press any key to continue.": CALL  -756:FL = 0: GOTO 300
  191. 2000  REM     -- DAILY PRICE FILE NOT FOUND --
  192. 2010  & "WINDOW": HOME : & "POS",1,5;"I cannot find the daily price file for ";A$: & "POS",30,13;"Press any key to continue": CALL  -198: CALL  -756
  193. 2020 FL = 0: GOTO 300
  194. 2030  REM     -- WEEKLY PRICE FILE NOT FOUND --
  195. 2040 CF = 1:FL = 0: GOTO 1180
  196. 2050  REM     -- PRICE FILE NOT FOUND FOR CLEANING --
  197. 2060  HOME : & "POS",1,10: & "CENTER","<< NO SUCH FILE >>": CALL  -198:FL = 0: FOR I = 0 TO 1000: NEXT : GOTO 300
  198. 2070  REM    -- DATA DISK IS FULL --
  199. 2080  PRINT D$"CLOSE": & "WINDOW": HOME : FOR I = 0 TO 3: CALL  -198: NEXT : & "POS",1,10: & "CENTER","*** THE DATA DISK IS FULL ***"
  200. 2090  PRINT : & "CENTER","You must use another data disk or decrease": & "CENTER","the size of your Price files.": PRINT : PRINT 
  201. 2100  & "CENTER","<< Press any key to exit >>": CALL  -758: GOTO 1880
  202. 2110  REM    <<---- WEEKLY PRICE FILE NOT FOUND FOR STOCK SPLIT ---->>
  203. 2120 FL = 0: GOTO 300
  204. 2130  REM     -- SECTION TITLE SUB --
  205. 2140  & "WINDOW": HOME : VTAB 2: & "CENTER",N$: & "WINDOW",4: HOME : RETURN 
  206. 2150  REM     -- GET INVESTMENT NAME SUB --
  207. 2160  PRINT "Name: ";: & "IU","#=0..9,A..Z,.;@=A..Z,1";"@#####";A$: RETURN 
  208. 2170  REM     -- STANDARD SPIEL --
  209. 2180  & "POS",15,9;"Enter the name of the Investment or 1 for a list of": & "POS",15,10;"Investments on file.": & "POS",30,11;"(RETURN to exit to Menu)": & "POS",35,12: RETURN 
  210. 2190  REM     --- FOR A RECORD DELETION/ UPDATE M$() ---
  211. 2200  REM      -- & COMPRESS MASTER FILE (VAR D MUST HOLD ARRAY POS) --
  212. 2210 A$ = M$(D,0): IF D = A1  THEN  GOTO 2250
  213. 2220  FOR I = D TO A1:M$(I,0) = M$(I +1,0):M$(I,1) = M$(I +1,1)
  214. 2230  IF M$(I,0) = A$  THEN A = ( VAL(M$(I,1))) -1:M$(I,1) =  STR$(A)
  215. 2240  NEXT 
  216. 2250 A1 = A1 -1: PRINT D$"OPEN TEMP,L55": PRINT D$"WRITE TEMP,R0"
  217. 2260  PRINT A1: PRINT D$"OPEN MASTER":K = 1: FOR I = 1 TO A1 +1
  218. 2270  IF D = I  THEN  GOTO 2310
  219. 2280  PRINT D$"READ MASTER,R"I: FOR J = 0 TO 9: INPUT T$(J): NEXT 
  220. 2290  IF T$(0) = A$  AND I >D  THEN A =  VAL(T$(1)) -1:T$(1) =  STR$(A)
  221. 2300  PRINT D$"WRITE TEMP,R"K: FOR J = 0 TO 9: PRINT T$(J):T$(J) = "": NEXT :K = K +1
  222. 2310  NEXT : PRINT D$"CLOSE": PRINT D$"DELETE MASTER": PRINT D$"RENAME TEMP, MASTER": RETURN